<?php
/**
 * @title 49. 字母异位词分组 - 哈希
 * @author start2004
 */

class Solution {

    /**
     * @param String[] $strs
     * @return String[][]
     */
    function groupAnagrams($strs) {
        /**
         * @since 2020-07-22 结果集
         */
        $result = [];

        /**
         * @since 2020-07-22 字母数量
         */
        $chars = [
            "a" => 0,
            "b" => 0,
            "c" => 0,
            "d" => 0,
            "e" => 0,
            "f" => 0,
            "g" => 0,
            "h" => 0,
            "i" => 0,
            "j" => 0,
            "k" => 0,
            "l" => 0,
            "m" => 0,
            "n" => 0,
            "o" => 0,
            "p" => 0,
            "q" => 0,
            "r" => 0,
            "s" => 0,
            "t" => 0,
            "u" => 0,
            "v" => 0,
            "w" => 0,
            "x" => 0,
            "y" => 0,
            "z" => 0,
        ];

        /**
         * @since 2020-07-22 长度
         */
        $len = count($strs);



        /**
         * @since 2020-07-22 遍历`strs` - 36ms
         */
        for($i=0; $i<$len; $i++){
            $charCount = $chars;

            /**
             * @since 2020-07-22 统计单词字母数量
             */
            $str = $strs[$i];
            for($j=0,$l=strlen($str); $j<$l; $j++){
                $charCount[$str[$j]] += 1;
            }

            /**
             * @since 2020-07-22 统计key
             */
            $key = implode(",", $charCount);
            $result[$key][] = $str;
        }



        // /**
        //  * @since 2020-07-22 初始化 - 44ms
        //  */
        // $keys = array_fill(0, $len, $chars);
        // // return $keys;
        //
        // /**
        //  * @since 2020-07-22 遍历`strs`
        //  */
        // for($i=0; $i<$len; $i++){
        //     /**
        //      * @since 2020-07-22 统计单词字母数量
        //      */
        //     $str = $strs[$i];
        //     for($j=0,$l=strlen($str); $j<$l; $j++){
        //         $keys[$i][$str[$j]] += 1;
        //     }
        //
        //     /**
        //      * @since 2020-07-22 统计key
        //      */
        //     $key = implode(",", $keys[$i]);
        //     $result[$key][] = $str;
        // }





        // /**
        //  * @since 2020-07-22 遍历`strs` - 44ms
        //  */
        // foreach ($strs as $str){
        //     /**
        //      * @since 2020-07-22 统计单词字母数量
        //      */
        //     $charCount = $chars;
        //     for($i=0,$len=strlen($str); $i<$len; $i++){
        //         $charCount[$str[$i]] += 1;
        //     }
        //
        //     /**
        //      * @since 2020-07-22 统计key
        //      */
        //     $key = implode(",", $charCount);
        //     $result[$key][] = $str;
        // }

        /**
         * @return
         */
        $result = array_values($result);
        return $result;
    }
}


/**
 * @since 2020-07-22 随机单词, 测试性能
 */
// $words = [];
// $str = "abcdefghijklmnopqrstuvwxyz";
// for($i=1; $i<=2000; $i++){
//     /**
//      * @since 2020-07-22 3个长度单词
//      */
//     $word = "";
//     for ($j=1; $j<=3; $j++){
//         $word .= substr($str, rand(0, 25), 1);
//     }
//     $words[] = $word;
// }
// echo '["', implode('", "', $words) ,'"],';
// die();



/**
 * @url http://127.0.0.1/leetcode/202007/2020.07.22_3.php
 */
$datas = [
    // ["eat", "tea", "tan", "ate", "nat", "bat"],

    ["zuo", "zgl", "yki", "fks", "nbe", "cth", "sxg", "rlk", "dai", "mqx", "tps", "hpy", "toi", "bts", "ugu", "zjn", "gbk", "ntv", "xxw", "gjm", "edc", "wls", "ueg", "dga", "wag", "qaq", "dgr", "otk", "kri", "gyr", "tcv", "wzh", "oum", "vxs", "vtt", "ckt", "soa", "kdt", "vnl", "duj", "vnm", "qjm", "yxg", "ktd", "cox", "wri", "qjw", "quz", "kpn", "vth", "fou", "sfe", "edc", "knv", "oqk", "lmb", "tcl", "qtf", "pdv", "czo", "kfc", "eyh", "icl", "kny", "gbp", "qnb", "rhe", "cyy", "hoc", "dqb", "rbh", "tff", "boh", "nzv", "lfx", "bvk", "cms", "hpq", "fxe", "hav", "jrw", "qlc", "vnr", "daq", "zmv", "wnr", "hqe", "ayt", "qeq", "vlq", "rvi", "omu", "rih", "imi", "zlv", "vhi", "moz", "qox", "jfb", "abn", "rtj", "zhv", "tzd", "bhp", "kgb", "fbi", "oox", "nfm", "los", "npu", "bgn", "kgv", "fau", "jbb", "zli", "ark", "ify", "gsd", "tes", "lri", "fso", "tcv", "oiv", "isx", "krj", "sra", "caf", "bhy", "fac", "ymt", "gsm", "vlp", "qax", "miq", "jsh", "tlz", "toa", "zph", "yvi", "atv", "uan", "gvz", "vmz", "tyi", "jib", "rbm", "qva", "rvq", "ytm", "htf", "cog", "qub", "qqn", "qjm", "ytu", "akw", "nbr", "nsm", "erg", "qzz", "wbn", "csi", "eiy", "syi", "exc", "zxn", "vko", "myh", "zdz", "fuy", "fra", "tus", "cza", "arz", "jwx", "lvu", "yqf", "nde", "vch", "uic", "tot", "tho", "mkn", "mle", "mua", "jgw", "eem", "ksp", "ons", "wia", "zbp", "svw", "hhh", "uus", "zgm", "aqs", "wux", "iep", "ytd", "qpl", "ron", "ghi", "dop", "kjj", "cjp", "ojf", "hfa", "fof", "umy", "ydn", "juc", "wak", "fdz", "uoi", "dqr", "tfb", "znh", "zsv", "eni", "cll", "qvg", "ssg", "cxk", "bry", "kvp", "cou", "dnh", "lma", "hrn", "pty", "bku", "hdm", "ofk", "yhb", "xsx", "mul", "hyy", "pkl", "prc", "cgw", "aih", "vpk", "hdq", "scx", "uzq", "rml", "ctj", "bit", "nxk", "qar", "mba", "uwp", "eet", "uww", "sqw", "ihi", "tkc", "dml", "xzi", "ipi", "acj", "awg", "pak", "jvg", "fnx", "bwf", "kqp", "mtb", "xqa", "gzq", "pzs", "zzo", "fpo", "pyk", "wex", "tgu", "yqk", "ocd", "pau", "qgt", "gvs", "yvr", "mag", "bpf", "llj", "jfq", "ddg", "orj", "rhj", "mxq", "fem", "ydh", "pqh", "wsx", "cej", "mno", "crs", "ifk", "sxr", "cjp", "spt", "fnw", "mdn", "uaf", "scj", "cpx", "qro", "jau", "tss", "kub", "znq", "tse", "qfh", "dai", "isk", "sua", "plr", "eur", "yok", "qyf", "sys", "jsl", "niq", "vmq", "evj", "pne", "pdq", "ghl", "ygz", "jwx", "opw", "gyo", "rmx", "iik", "zmf", "ibt", "nrw", "dxe", "owk", "ofh", "mtw", "iav", "xsi", "var", "fae", "ljg", "ewx", "bav", "gpr", "qdx", "ypr", "uys", "qvk", "zql", "rvl", "vgu", "blr", "znr", "utg", "mjk", "jhz", "bcy", "ttt", "dtk", "pkg", "agn", "viy", "mhm", "ecf", "kop", "vyx", "vza", "tsu", "mwn", "xly", "dme", "qin", "puu", "byw", "gjl", "wfj", "taj", "utb", "ogy", "cdk", "ahw", "fxf", "tma", "onz", "lui", "wqo", "gko", "pei", "rto", "pvs", "zwz", "wcx", "bwj", "bkx", "avs", "jrj", "xyt", "lny", "ues", "ito", "btk", "bpn", "yqj", "ist", "fso", "ybg", "hze", "bls", "afw", "soq", "gpj", "rqy", "fop", "oxh", "ida", "xbc", "dib", "ikn", "aks", "xdh", "njw", "xbn", "wgc", "luz", "tdc", "tad", "vdm", "xmx", "knh", "dkk", "lyu", "ivv", "vrc", "ydw", "xwz", "aqa", "eme", "rjq", "oud", "vyn", "gjm", "brh", "xny", "zlc", "vjy", "vjo", "vob", "zfk", "qtf", "tpe", "hwn", "txf", "bus", "ate", "cpn", "alx", "phm", "qhr", "bxl", "hrb", "lzx", "ytv", "eup", "xuj", "bxy", "pyk", "nor", "zey", "qgw", "cnn", "dyn", "axg", "vcb", "lzw", "uat", "tqs", "ddg", "ucl", "tsr", "puf", "dye", "qyc", "xue", "zfd", "wae", "puu", "ixx", "osz", "zls", "rbn", "wfl", "bwk", "dtf", "htl", "kpl", "off", "jnd", "gbv", "gbh", "zsj", "npo", "yqk", "jte", "oax", "zlm", "lar", "rjf", "uqg", "qxh", "ywa", "ijp", "wig", "hra", "mgb", "jgm", "wsn", "ojw", "ten", "zvk", "hth", "ibq", "xyz", "egr", "esx", "fce", "syw", "fmf", "cfk", "pff", "any", "hva", "ytz", "xxg", "pby", "mha", "rzz", "nel", "tgr", "dww", "iwk", "hef", "hcy", "haw", "npy", "mcf", "nte", "mhj", "yap", "pdl", "mli", "wsm", "bap", "aip", "wvf", "uii", "avc", "ehj", "nfk", "dvn", "piz", "xes", "kgt", "zhb", "pex", "vyf", "dzb", "gdi", "pro", "zvk", "nks", "nix", "fsd", "ysl", "ahp", "ycn", "dgn", "fmq", "nci", "ccd", "mpo", "ecx", "biq", "fhi", "qhq", "fgs", "tkz", "gpl", "xco", "gfq", "krg", "zwj", "wxr", "mdz", "uuh", "kzn", "dtx", "dam", "oyp", "deu", "tom", "zni", "ikg", "awj", "zre", "gce", "ugx", "rjy", "eyw", "tbb", "ovq", "aue", "jdo", "pel", "zed", "dlf", "hfm", "fxw", "dbv", "avw", "bks", "sln", "wuq", "kkv", "wjz", "znl", "fuq", "sao", "oeq", "jel", "ggw", "yyh", "luc", "cfm", "ycw", "xbj", "jhe", "zze", "ooi", "exn", "qet", "mds", "uon", "wrs", "jpv", "fnw", "owe", "swd", "xkr", "fpp", "sft", "msw", "eml", "rjc", "kss", "fxf", "clc", "gey", "kcj", "bhy", "rad", "lnv", "hri", "tjr", "wtj", "ozg", "ucs", "wjx", "utz", "dvh", "cmi", "fxv", "bfm", "jyw", "bvp", "kjp", "rdr", "kaa", "iuu", "iyp", "pbc", "xga", "sig", "fsf", "bta", "rej", "hvn", "zgn", "zoi", "uwh", "kmi", "mkp", "ncy", "tiq", "ykj", "yco", "ijj", "wiq", "jie", "scb", "amn", "jzx", "zna", "xgj", "oet", "ydw", "mlf", "win", "msw", "rkz", "slm", "gvl", "euy", "esf", "ohk", "hfn", "esz", "joh", "xba", "tsk", "slw", "err", "qvm", "paf", "uom", "fws", "tak", "tjz", "bha", "bas", "mtd", "ixv", "aoq", "mer", "rzf", "eec", "wxc", "gqm", "frt", "gtt", "yfn", "cnl", "xnz", "oad", "gsc", "lwh", "nte", "qav", "cgn", "vmg", "plm", "dnz", "oln", "oao", "sgh", "usd", "cgx", "hwx", "dyd", "qup", "xka", "kno", "kbz", "ypa", "mhg", "tcz", "xff", "umb", "rpa", "ugu", "kee", "kos", "yyu", "ywk", "yjs", "fcu", "eaa", "jvm", "kmc", "khi", "frn", "kcb", "cba", "wzw", "hyg", "zdi", "uij", "ure", "hcr", "jny", "ssq", "fdt", "hgu", "hdu", "eks", "kjw", "tde", "cxv", "hex", "yol", "xgd", "nlh", "htn", "baq", "vfa", "npj", "kjn", "omk", "jtp", "hrd", "spj", "wcv", "djo", "rlp", "hgu", "iuk", "ret", "ftg", "pdz", "fkr", "idg", "saj", "oet", "dve", "sdl", "nlg", "ycl", "sie", "yxh", "xds", "omw", "vew", "etb", "xww", "bpz", "nck", "tan", "esv", "irt", "qox", "idj", "fyo", "cdh", "dad", "acs", "apv", "ljw", "zno", "vwg", "onu", "mvy", "vbx", "jdb", "qgb", "uge", "ngu", "isd", "erq", "tmn", "zba", "unw", "tix", "rsa", "sjg", "uen", "yru", "sam", "vee", "myq", "zyr", "ate", "wmn", "tef", "uwp", "bqt", "ook", "jgk", "wcp", "aoo", "qom", "iof", "mls", "afw", "fzs", "vaj", "opx", "zye", "jvh", "zwv", "nmk", "zuz", "fhk", "yhp", "uno", "nip", "wxe", "uwd", "zgy", "gfu", "csh", "msc", "myk", "wws", "mrg", "aeo", "pbm", "uvi", "xuo", "wau", "rcn", "zpg", "cbe", "myb", "eks", "klw", "zax", "mvt", "usn", "jpo", "dgr", "rfg", "xii", "cug", "dzq", "wkb", "skc", "qwy", "krq", "xag", "mem", "dvs", "jta", "rvv", "yzv", "pvg", "qoq", "tfn", "rpe", "inf", "ozk", "bcg", "tlz", "udv", "qcv", "lrq", "sif", "ibk", "wtz", "bbm", "hql", "rrn", "ylz", "ygd", "uwf", "piw", "gae", "ljg", "vfz", "vhb", "hor", "tgj", "hfu", "hda", "kxw", "qmf", "ntf", "reo", "yau", "yvb", "zdq", "rxx", "aec", "ulg", "vwd", "smq", "xzj", "cro", "rqo", "loj", "nnn", "efk", "cfo", "eaa", "kvx", "onk", "elj", "onb", "cfr", "rqg", "aet", "niz", "yke", "mpf", "nab", "kop", "uta", "eio", "gkt", "ycj", "eco", "yqx", "xoi", "cbx", "hpy", "ian", "xvg", "xao", "lgz", "efc", "oje", "dhv", "afk", "ihl", "gob", "fxb", "suw", "ysw", "ndd", "nii", "pxr", "uaz", "qbe", "akm", "mrb", "nwy", "oos", "knl", "hbp", "kpx", "sfv", "kzw", "kqy", "pqi", "bdz", "cqv", "bfj", "tqx", "fxy", "uin", "sat", "nlt", "kvj", "ika", "qmd", "ppt", "lqy", "vko", "spl", "rjt", "fbu", "ypg", "rzc", "aim", "ayz", "eoo", "xzf", "vvp", "kne", "wfo", "qkq", "lif", "raf", "tbn", "gcl", "fga", "uda", "zzv", "pkj", "ugo", "iwz", "yih", "ezi", "jtj", "wzl", "ifr", "iav", "jau", "epe", "ojl", "dsi", "cqq", "kuq", "sej", "caj", "nip", "frp", "abp", "vff", "aup", "lxh", "tax", "kls", "bdw", "kgx", "utg", "jzy", "yzz", "ouf", "uuz", "jgx", "qay", "olj", "hmn", "ewt", "bqn", "ham", "fzl", "fog", "kib", "jsh", "hji", "fxt", "off", "bjb", "vls", "ist", "uys", "gdg", "mop", "nyh", "vfq", "dlo", "xzt", "cbd", "ewo", "xfh", "qzg", "ifk", "osy", "dgw", "lbc", "bfn", "pcn", "jfp", "njm", "chr", "jxq", "qgw", "avo", "zzu", "wkv", "ylb", "mbe", "zlk", "pyt", "bab", "sky", "ibe", "ebz", "tby", "nxj", "jwv", "ljx", "pii", "zxh", "tzi", "urt", "tau", "yfw", "yyx", "xlv", "gvs", "bgb", "yvk", "hvi", "pph", "xky", "qdz", "lce", "hac", "exo", "adj", "sfp", "uel", "flh", "nax", "vyh", "tol", "tzn", "xhn", "all", "pmp", "yfu", "ozy", "afj", "isk", "fni", "mhx", "yaw", "lyd", "zyp", "lnc", "amh", "ubh", "scm", "ckf", "mqs", "vda", "sba", "pnz", "tnx", "iyl", "lyy", "stz", "alc", "non", "sbd", "lwh", "loi", "mdw", "lwk", "jfi", "uqh", "sja", "skm", "vxa", "ipc", "lay", "tln", "byq", "yjn", "ist", "rnk", "yft", "yye", "ltb", "mbq", "onr", "ngd", "aib", "rhl", "fpd", "ygr", "jfx", "dev", "hpp", "ibr", "zqf", "qdm", "uev", "vwc", "hbr", "lay", "cje", "zni", "vux", "kcz", "ccq", "htu", "tny", "ojv", "qqx", "iby", "hdi", "lcv", "typ", "ris", "qku", "hsn", "blb", "zak", "vra", "szc", "qhf", "ysi", "tmg", "jdp", "bua", "wbs", "kde", "lde", "wyv", "xqv", "zhc", "ffv", "nzi", "uim", "kkh", "khj", "drm", "hdp", "lzn", "hwe", "cwl", "fbr", "bpr", "jja", "vtk", "cer", "lhj", "yom", "nam", "bij", "fkf", "rqg", "jrv", "abf", "awz", "lze", "dll", "mja", "yxb", "lyj", "udu", "zvk", "gec", "cfd", "hga", "hra", "lvl", "xhv", "xgs", "zrq", "ilu", "dlp", "nsu", "qua", "tcg", "uky", "uvt", "fta", "arh", "tqy", "jzk", "dcw", "tpp", "ngj", "nzm", "utw", "sos", "mtl", "nuc", "unt", "txs", "eau", "auk", "piq", "zwq", "mqk", "jjy", "bvs", "njn", "qea", "jxy", "bbz", "wct", "gsb", "xsy", "neo", "yoy", "wpu", "odd", "bth", "ccf", "aeh", "aak", "thc", "vfv", "tta", "iro", "gne", "ach", "eea", "mgd", "rhh", "yhi", "ibq", "lxv", "hqo", "hzg", "wft", "agv", "hla", "ixg", "lpo", "tnw", "cwx", "tiv", "oql", "dxl", "ktq", "dux", "zbj", "zkg", "gwv", "upj", "rsg", "plo", "kae", "vec", "how", "ysq", "vrs", "erc", "lxz", "gso", "qjh", "wys", "lit", "qex", "sll", "pje", "gfv", "ykm", "bvk", "acd", "psm", "wol", "pau", "iqy", "gjk", "syu", "wfz", "sek", "fgf", "phh", "twa", "ftp", "rjp", "lsg", "kyp", "vro", "pnt", "pgx", "zle", "ebl", "muh", "nab", "crl", "sdd", "ync", "oit", "cyh", "wno", "umz", "yra", "jev", "rrv", "sum", "dnq", "hld", "jzm", "dck", "lyx", "zsk", "zrb", "zag", "vry", "qkt", "dog", "tvs", "wfs", "jju", "tut", "rum", "btd", "cte", "jov", "hfg", "aiu", "hbq", "zyw", "rhf", "mba", "fsv", "rto", "vwi", "zfx", "vnc", "bok", "wvm", "nvk", "jms", "pzt", "pem", "lwf", "zrc", "iqh", "flv", "hnj", "sjf", "ewa", "pfn", "hvm", "bkr", "nwn", "twf", "vev", "dkh", "zru", "jje", "ooa", "pdg", "dlb", "qmm", "iai", "wue", "bqj", "xtt", "esk", "zcu", "drj", "dhm", "kkx", "mbk", "yjl", "hfg", "lhw", "uep", "nji", "yil", "tlc", "cpj", "pau", "nmv", "ykf", "krl", "qds", "myx", "clg", "lko", "wda", "ygq", "ivq", "cjd", "xho", "drg", "ohj", "huh", "ewt", "lie", "aei", "ado", "rlk", "iot", "lmb", "zps", "fea", "plu", "xqr", "qcz", "vce", "ddh", "sut", "cdh", "wot", "xoj", "qtn", "qjz", "kgp", "bxr", "bsu", "fvx", "mns", "gqv", "omk", "hky", "qas", "dqb", "dbh", "sde", "kew", "fjs", "cwg", "vdw", "qri", "ays", "zps", "rtj", "twk", "bpn", "gas", "cfb", "vhy", "bcb", "xts", "gur", "ztg", "sla", "bfw", "mgl", "zml", "rpq", "tly", "rmb", "tku", "lrp", "cqi", "jju", "jka", "gxg", "sxt", "doj", "uiu", "tah", "utr", "pfi", "ehz", "nri", "iat", "ihq", "pzn", "icc", "sxk", "mrl", "tme", "lbk", "ugr", "ttj", "cbk", "vkr", "lzq", "zht", "bzr", "mmi", "ygu", "drw", "nmc", "fgw", "oiy", "ydi", "pph", "goo", "zqo", "qda", "zbh", "tez", "qrl", "swr", "okz", "nid", "vys", "ceh", "rey", "fub", "gtc", "nng", "mdx", "ywt", "qle", "pyn", "ttm", "mvq", "umu", "srp", "tyj", "vmw", "czz", "zxw", "tnh", "ydf", "lxy", "yjt", "oef", "jwx", "zpw", "ili", "fnh", "fnf", "bht", "igx", "nru", "lpe", "eei", "kof", "iou", "ewg", "nbu", "vgh", "aip", "uqv", "rdn", "mod", "rti", "zew", "emk", "zrh", "ffj", "zaq", "hby", "wvo", "rnr", "fzg", "iqa", "qqe", "nvr", "yui", "fan", "pao", "fhp", "eel", "twy", "kby", "rjp", "raf", "vna", "mlv", "vrw", "jgw", "xme", "mqi", "xjf", "wug", "umq", "jdq", "pze", "pmp", "lig", "hrn", "doz", "ibq", "qza", "vvv", "cqh", "tzl", "kol", "oey", "eqg", "lxx", "ybm", "yjo", "oan", "pwj", "lyz", "tsz", "ecn", "qqs", "ovi", "vgg", "seh", "fcr", "trr", "gho", "psn", "plf", "oqh", "chy", "uwt", "dra", "jje", "roh", "iiz", "aoh", "oez", "btl", "gic", "okj", "nff", "hiw", "hsg", "mjv", "usd", "uss", "bhw", "biq", "mpy", "pej", "yrp", "ezy", "bhq", "hta", "dos", "gil", "yjs", "vka", "lxq", "kmu", "tlm", "jqm", "hrt", "xzn", "xcc", "qik", "bgu", "ucf", "vnd", "lyq", "gsb", "tbs", "fij", "zfi", "ndk", "put", "zvz", "upc", "zlp", "cwn", "tdf", "uwh", "nbp", "wbu", "foy", "pds", "ido", "ixe", "kwp", "azm", "osp", "unl", "ban", "qxo", "lcc", "jsg", "cbj", "qkg", "vvd", "kwc", "wkv", "mfi", "xgj", "lxg", "zij", "csc", "ive", "rmo", "yhk", "bsg", "dpr", "ybw", "hzd", "rka", "yjj", "hmc", "kux", "omj", "ckq", "nlj", "tpy", "koa", "hwz", "knj", "klt", "tsg", "vdb", "trn", "cuy", "thk", "caz", "bln", "bsj", "bcx", "lmi", "egb", "kce", "lvv", "zyp", "xsw", "hvx", "hwi", "vya", "fzd", "ckp", "kpw", "maz", "qlv", "mlt", "bjl", "yrg", "wyd", "euc", "fzc", "icn", "ync", "vzc", "upo", "pba", "jdj", "vca", "cyz", "gdt", "iis", "kqu", "xph", "akh", "dew", "suy", "sec", "bae", "cdd", "bjg", "uso", "ndf", "ibu", "qbe", "xfj", "uxe", "sqi", "vsi", "aum", "dwv", "kqo", "zer", "fmt", "zcv", "eaa", "ouy", "sno", "aig", "jja", "wmw", "sxn", "gwr", "ybe", "rbg", "nfh", "nub", "lmo", "znx", "fxg", "gtt", "dlq", "qsm", "irn", "mjp", "twv", "ajp", "bvb", "qup", "nam", "thg", "mks", "cak", "pjc", "dvl", "soh", "npq", "dqm", "fgh", "uuh", "hnp", "oaz", "gda", "rsj", "tvf", "eot", "mcj", "cfz", "pkg", "wfb", "emp", "tbp", "ths", "tzl", "dth", "ixv", "cjx", "lmc", "lcn", "sys", "tcf", "iwg", "xpo", "qin", "bmg", "jue", "ewo", "cib", "ftd", "slb", "lee", "rma", "xkq", "mbz", "zdl", "gmf", "lrc", "ztk", "byd", "frp", "hct", "ltg", "mrr", "cdt", "cdw", "nki", "tva", "vvt", "gwr", "kci", "zjl", "tuf", "ahw", "rkz", "kmd", "han", "qti", "qpd", "jwa", "bgc", "kgl", "wzg", "bzo", "xrz", "xcl", "akm", "naf"],
];

include_once dirname(__DIR__) . DIRECTORY_SEPARATOR ."xhprof.php";
$xhprof = new Xhprof();
foreach ($datas as $data){
    var_dump($data);

    $obj = new Solution();
    $result = $obj->groupAnagrams($data);
    var_dump($result);
    echo str_repeat("<br>", 3);
}
$xhprof->end();
